package org.lql.algo.codecrush.week002;

import java.util.Set;

/**
 * @author: liangqinglong
 * @date: 2025-07-29 16:17
 * @description: LCR 186. 文物朝代判断 <a href="https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/description/">...</a>
 **/
public class CheckDynasty {

	/**
	 * 展览馆展出来自 13 个朝代的文物，每排展柜展出 5 个文物。某排文物的摆放情况记录于数组 places，
	 * 其中 places[i] 表示处于第 i 位文物的所属朝代编号。
	 * 其中，编号为 0 的朝代表示未知朝代。请判断并返回这排文物的所属朝代编号是否能够视为连续的五个朝代（如遇未知朝代可算作连续情况）。
	 * <p>
	 * 示例 1：
	 * <p>
	 * 输入：places = [0, 6, 9, 0, 7]
	 * 输出：True
	 * <p>
	 * 示例 2：
	 * <p>
	 * 输入：places = [7, 8, 9, 10, 11]
	 * 输出：True
	 * <p>
	 * 提示：
	 * <p>
	 * places.length = 5
	 * 0 <= places[i] <= 13
	 */
	public boolean checkDynasty(int[] places) {
		Set<Integer> set = new java.util.HashSet<>();
		int max = -1;
		int min = 14;
		for (int place : places) {
			if (place == 0) {
				continue;
			}
			if (set.contains(place)) {
				return false;
			}
			set.add(place);
			max = Math.max(max, place);
			min = Math.min(min, place);
		}
		return max - min < 5;
	}

	public static void main(String[] args) {
		int[] places = {0, 6, 9, 0, 7};
		CheckDynasty checkDynasty = new CheckDynasty();
		boolean result = checkDynasty.checkDynasty(places);
		System.out.println(result);
	}
}
